package com.henry.album.service;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import com.henry.album.files.manager.FileInfoManager;
import com.henry.album.files.model.FileInfo;
import com.henry.album.model.FileItem;
import com.henry.album.util.HenryDateUtil;
import com.henry.album.util.ImgUtils;
import com.henry.album.util.VedioUtil;

@Service
public class FileScanService {

	@Autowired
	FileInfoManager fileInfoManager;

	public List<FileItem> fileItems = new ArrayList<FileItem>();

	public static void main(String[] args) {

		FileScanService s = new FileScanService();

		s.scan();
	}

	public void scan() {

		String rootPath = "";

		String os = System.getProperty("os.name");

		if (os.startsWith("Windows")) {

			// Windows系统,默认扫描 D盘 D:/data目录
			rootPath = "D:/data";

		} else if (os.startsWith("Linux")) {
			// Linux系统 默认扫描 /data 目录
			rootPath = "/data";

		} else if (os.startsWith("Mac")) {
			System.out.println("Mac");
			// Mac系统=====不做考虑
		} else {
			// 其他系统===不做考虑
			System.out.println("Mac");
		}

		if (!ObjectUtils.isEmpty(rootPath)) {

			File parentFile = new File(rootPath);

			if (!parentFile.exists()) {
				return;
			}

			getFile(parentFile);

			//
			System.out.println(fileItems);

		}

	}

	private void getFile(File file) {

		// /data/thumb 或者 D:/data/thumb 缩率图文件夹不要扫描
		//if (file.getAbsolutePath().indexOf("/data/thumb") != -1) {
		//	return;
		//}


		FileInfo f = new FileInfo();

		f.setFileName(file.getName());		
		//正斜杆
		String filePath = file.getAbsolutePath().replaceAll("\\\\","/");
		
		f.setAbsolutePath(filePath);
		f.setCreateTime(HenryDateUtil.getCurrentDateTime());
		f.setFileSize(file.length() + "");
		f.setFileSuffix(ImgUtils.getSuffix(file.getName()));
		f.setFileType(file.isDirectory() ? "目录" : "文件");
		f.setIsImage(ImgUtils.isImage(file.getName())? "image" : "other");
		f.setOriginalTime(ImgUtils.getImageTime(file));
		
		//判断是否视频
		if("other".equals(f.getIsImage())) {			
			if(VedioUtil.isVedio(file.getName())) {								
				f.setIsImage("vedio");
			}			
		}
		
		
		//扫描不要压缩了，很吃内存，如果要压缩，访问的时候现场压缩
	    //String uuid = UUID.randomUUID().toString().replace("-", "");
		//f.setThumbnailsName("238923230923.png");
		//f.setThumbnailsPath("D:/data/thumb/238923230923.png");

		fileInfoManager.saveOrUpdate(f);


		if (file.isDirectory()) {
			File[] children = file.listFiles();
			for (File child : children) {
				getFile(child);
			}
		}

	}

}
